/**
 * 
 */
package es.ibm.santillana.mdm.state;

import java.util.Calendar;

import com.ibm.pim.attribute.AttributeInstance;
import com.ibm.pim.catalog.Catalog;
import com.ibm.pim.catalog.CatalogManager;
import com.ibm.pim.catalog.item.Item;
import com.ibm.pim.collaboration.CollaborationItem;
import com.ibm.pim.common.exceptions.PIMInvalidOperationException;
import com.ibm.pim.context.Context;
import com.ibm.pim.context.PIMContextFactory;
import com.ibm.pim.hierarchy.Hierarchy;
import com.ibm.pim.hierarchy.HierarchyManager;
import com.ibm.pim.hierarchy.category.Category;
import com.ibm.pim.organization.User;

import es.ibm.santillana.mdm.common.bussinesmodel.ConfigModel;
import es.ibm.santillana.mdm.common.util.ConstSantillana;

/**
 * @author Benito
 *
 */
public class StateManager {

	/**
	 * 
	 */
	
	public StateManager() {
		// TODO Auto-generated constructor stub
	}
	
	public static void setState(CollaborationItem item, String state, String sSpecState) {
		Context ctx =  PIMContextFactory.getCurrentContext();
		CatalogManager caMan = ctx.getCatalogManager();
		System.out.println("Voy a meter el temita " + sSpecState + ConstSantillana.ESTADO +"-"+ state);
		Calendar calendar = Calendar.getInstance();
		AttributeInstance aiEstado = item.getAttributeInstance(sSpecState+ConstSantillana.ESTADO_DESC);
		Catalog ctg = caMan.getCatalog(ConstSantillana.CATALOGO_ESTADOS);
		Item itmState = ctg.getItemByPrimaryKey(state);
		aiEstado.setValue(itmState);
		item.setAttributeValue(sSpecState + ConstSantillana.FECHA_ESTADO, calendar.getTime());
		item.setAttributeValue(sSpecState + ConstSantillana.ESTADO, state);
	}
	
	public static void setState(Item item, String state, String sSpecState) {
		Context ctx =  PIMContextFactory.getCurrentContext();
		CatalogManager caMan = ctx.getCatalogManager();
		System.out.println("Voy a meter el temita " + sSpecState + ConstSantillana.ESTADO);
		Calendar calendar = Calendar.getInstance();
		AttributeInstance aiEstado = item.getAttributeInstance(sSpecState+ConstSantillana.ESTADO_DESC);
		Catalog ctg = caMan.getCatalog(ConstSantillana.CATALOGO_ESTADOS);
		Item itmState = ctg.getItemByPrimaryKey(state);
		aiEstado.setValue(itmState);
		System.out.println("hola que ase " + state);
		System.out.println("hola que ase item " + itmState.getPrimaryKey());
		item.setAttributeValue(sSpecState + ConstSantillana.FECHA_ESTADO, calendar.getTime());
		item.setAttributeValue(sSpecState + ConstSantillana.ESTADO, state);
	}
	

	public static void setStateFromExtension(CollaborationItem item, String sSpecState, Item itemCtg) {
		System.out.println("Estoy en setStateFromExtension");
		AttributeInstance aiEstado = item.getAttributeInstance(sSpecState+ConstSantillana.ESTADO);
		String estadoActual = (String) aiEstado.getValue();
		AttributeInstance aiEstadoDesc = item.getAttributeInstance(sSpecState+ConstSantillana.ESTADO_DESC);
		
		String state = ConstSantillana.ESTADO_EN_LOGISTICA;
		Context ctx = PIMContextFactory.getCurrentContext();
		HierarchyManager hyMan = ctx.getHierarchyManager();
		Hierarchy hy = hyMan.getHierarchy("Sociedades");
		Category cat = hy.getCategoryByPrimaryKey("0676");
		System.out.println("Estoy en setStateFromExtension " + state);
		if (estadoActual.equals(ConstSantillana.ESTADO_EN_EDICION)){
			
			CatalogManager caMan = ctx.getCatalogManager();
			System.out.println("Voy a meter el temita " + sSpecState + ConstSantillana.ESTADO);
			Calendar calendar = Calendar.getInstance();
			Catalog ctg = caMan.getCatalog(ConstSantillana.CATALOGO_ESTADOS);
			Item itmState = ctg.getItemByPrimaryKey(state);
			aiEstadoDesc.setValue(itmState);
			AttributeInstance aiCtgEstadoDesc = itemCtg.getAttributeInstance(sSpecState+ConstSantillana.ESTADO_DESC);
			System.out.println("ai estado: " + aiCtgEstadoDesc.getPath());
			System.out.println("item estado: " + itmState.getPrimaryKey());
			aiCtgEstadoDesc.setValue(itmState);
			System.out.println("Voy a meter al colarea");
			

			item.setAttributeValue(sSpecState + ConstSantillana.FECHA_ESTADO, calendar.getTime());
			item.setAttributeValue(sSpecState + ConstSantillana.ESTADO, state);
			
			System.out.println("Voy a meter al ctg");
			
			itemCtg.setAttributeValue(sSpecState + ConstSantillana.FECHA_ESTADO, calendar.getTime());
			itemCtg.setAttributeValue(sSpecState + ConstSantillana.ESTADO, state);
			itemCtg.save();
			System.out.println("temitas del catalogo");
			System.out.println(itemCtg.getAttributeValue(sSpecState + ConstSantillana.FECHA_ESTADO));
			System.out.println(itemCtg.getAttributeValue(sSpecState + ConstSantillana.ESTADO));
			
			System.out.println("temitas del ca");
			System.out.println(item.getAttributeValue(sSpecState + ConstSantillana.FECHA_ESTADO));
			System.out.println(item.getAttributeValue(sSpecState + ConstSantillana.ESTADO));
		}
	}
		public static void setStateFromExtension(CollaborationItem item, String sSpecState) {
			System.out.println("Estoy en setStateFromExtension");
			
			AttributeInstance aiEstadoDesc = item.getAttributeInstance(sSpecState+ConstSantillana.ESTADO_DESC);
			Item itemestadoActual = (Item) aiEstadoDesc.getValue();
			String estadoActual = itemestadoActual.getPrimaryKey();
			String state = ConstSantillana.ESTADO_EN_LOGISTICA;
			Context ctx = PIMContextFactory.getCurrentContext();
			HierarchyManager hyMan = ctx.getHierarchyManager();
			Hierarchy hy = hyMan.getHierarchy("Sociedades");
			System.out.println("Estoy en setStateFromExtension " + state);
			if (estadoActual.equals(ConstSantillana.ESTADO_EN_EDICION)){
				
				CatalogManager caMan = ctx.getCatalogManager();
				System.out.println("Voy a meter el temita " + sSpecState + ConstSantillana.ESTADO);
				Calendar calendar = Calendar.getInstance();
				Catalog ctg = caMan.getCatalog(ConstSantillana.CATALOGO_ESTADOS);
				Item itmState = ctg.getItemByPrimaryKey(state);
				aiEstadoDesc.setValue(itmState);
				System.out.println("Voy a meter al colarea");
				

				item.setAttributeValue(sSpecState + ConstSantillana.FECHA_ESTADO, calendar.getTime());
				item.setAttributeValue(sSpecState + ConstSantillana.ESTADO, state);
				
			
			
				
				System.out.println("temitas del ca");
				System.out.println(item.getAttributeValue(sSpecState + ConstSantillana.FECHA_ESTADO));
				System.out.println(item.getAttributeValue(sSpecState + ConstSantillana.ESTADO));
			}
	}
		

		
	
	
	
}
